//
//  ViewController.swift
//  DecodableDemo1
//
//  Created by 李煜 on 2024/5/9.
//

import UIKit
// 定义一个遵循Decodable协议的结构体
struct User: Codable {
    let name: String
    let age: Int

    // 使用CodingKeys枚举来提供键路径
    enum CodingKeys: String, CodingKey {
        case name
        case age
    }
}

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func encoderWithDecoder() {
        // JSON数据
        let jsonData = """
        {
            "name": "John Doe",
            "age": 30
        }
        """.data(using: .utf8)!

        // 创建一个JSONDecoder实例
        let decoder = JSONDecoder()

        
        do {
            // 1.解码JSON数据-> User对象
            let user = try decoder.decode(User.self, from: jsonData)
            print(user.name) // 输出: John Doe
            print(user.age) // 输出: 30

        } catch {
            print("Error decoding JSON: \(error)")
        }

        
        
        let user = User(name: "Tom", age: 2)
        do {
            // 2.编码 User -> JSON
            let data = try JSONEncoder().encode(user)
            print(data)
        } catch {
            debugPrint(error)
        }
    }
}
